/*public class Base {
    int a;
    int b;
    int c;
}

class Derived extends Base {
    int a;//与父类中成员a同名，且类型相同
    char b;//与父类中成员b同名，但类型不同

    public void method() {
        a = 10;
        b = 20;
        c = 30;
    }
}*/


//super关键字
/*
public class Base {
    int a;
    int b;
    public void methodA() {
        System.out.println("父类中的methodA");
    }
    public void methodB() {
        System.out.println("父类中的methodB");
    }
}

class Derived extends Base {
    int a;
    char b;

    //与父类中的methodA构成重载
    public void methodA(int a) {
        System.out.println("子类中的methodA");
    }

    //与父类中的methodB构成重写
    public void methodB() {
        System.out.println("子类中的methodB");
    }

    public void methodC() {
        //对于同名的成员变量，直接访问时，访问的都是子类的
        a = 100;//等价于：this.a = 100;
        b = 200;//等价于：this.b = 200;
        //注意：this是当前对象的引用

        //访问父类的同名成员变量时，需要super关键字
        super.a = 300;
        super.b = 400;

        //父类和子类中构成重载的方法，直接可以通过参数列表区分访问的是父类还是子类方法
        methodA();//没有传参，访问父类中的methodA()
        methodA(20);//传递int参数，访问子类中的methodA()

        //如果在子类中要访问重写的基类方法，则需要借助super关键字
        methodB();//直接访问，访问的是子类的methodB()，不可能访问到父类
        super.methodB();//访问父类的methodB()
    }
}*/

